package cn.goktech.staticproxy;

//ComputerProxy是代理对象
//在代理对象中引用目标对象功能，并且可以在功能执行前后做一些代码扩展或增强
public class ComputerProxy implements Computer {

    //ComputerImp 被代理对象
    private ComputerImp computerImp;

    public ComputerProxy(ComputerImp computerImp) {
        this.computerImp = computerImp;
    }

    @Override
    public int add(int i, int j) {
        System.out.println("日志记录开始，方法add，参数 i=" + i + ",j=" + j);
        int result = computerImp.add(i, j);
        System.out.println("日志记录结束，方法add，结果result=" + result);
        return result;
    }

    @Override
    public int sub(int i, int j) {
        System.out.println("日志记录开始，方法sub，参数 i=" + i + ",j=" + j);
        int result = computerImp.sub(i, j);
        System.out.println("日志记录结束，方法sub，结果result=" + result);
        return result;
    }

    @Override
    public int mul(int i, int j) {
        System.out.println("日志记录开始，方法mul，参数 i=" + i + ",j=" + j);
        int result = computerImp.mul(i, j);
        System.out.println("日志记录结束，方法mul，结果result=" + result);
        return result;
    }

    @Override
    public int div(int i, int j) {
        System.out.println("日志记录开始，方法div，参数 i=" + i + ",j=" + j);
        int result = computerImp.div(i, j);
        System.out.println("日志记录结束，方法div，结果result=" + result);
        return result;
    }
}
